<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>每日一题</title>
</head>
<body>
  <p>1:实现一个flatten函数，将一个嵌套多层的数组 array（数组） (嵌套可以是任何层数)转换为只有一层的数组，数组中元素仅基本类型的元素或数组，不存在循环引用的情况。Ex: flatten([1, [2], [3, [[4]]]]) => [1, 2, 3, 4];</p>
<script>
	var arr = [3, [2, -4, [5, 7]], -3, ['aa', [['bb']]]]
	var arr2 = flatten2(arr)
//	console.log(arr2)
	/*方法1*/
	function flatten(arr){
	  var newArr = []
	  function _flat(arr){
	    arr.forEach(val=>{
	      if(Array.isArray(val)){
	        _flat(val)
	      }else{
	        newArr.push(val)
	      }
	    })    
	  }
	  _flat(arr)
	  return newArr
	}
	/*方法2*/
	function flatten2(arr){
	  return arr.reduce(function(initArr, currentArr){
	    return initArr.concat(Array.isArray(currentArr)?flatten2(currentArr):currentArr)
	  }, [])
	}
</script>
</body>
</html>